﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Citas.Dominio;
using NHibernate;
using NHibernate.Criterion; 


namespace Citas.Persistencia.NH
{
    public class MedicoEspecialidadDAO : BaseDAO<MedicoEspecialidad, Int32>, IMedicoEspecialidadDAO
    {
        public ICollection<MedicoEspecialidad> ListarXEspecialidad(Int32 codigoEspecialidad)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICollection<MedicoEspecialidad> resultado = sesion
                        .CreateCriteria(typeof(MedicoEspecialidad))
                        .Add(Restrictions.Like("Especialidad.Codigo", codigoEspecialidad))
                        .List<MedicoEspecialidad>();
                return resultado;
            }
        }


        public MedicoEspecialidad ObtenerPorMedicoYEspecialidad(Int32 codigoMedico, Int32 codigoEspecialidad)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(MedicoEspecialidad));
                busqueda.Add(Restrictions.Eq("Medico.Codigo", codigoMedico));
                busqueda.Add(Restrictions.Eq("Especialidad.Codigo", codigoEspecialidad));
                return busqueda.UniqueResult<MedicoEspecialidad>();
            }
        }

        public MedicoEspecialidad ObtenerPorEspecialidad(Int32 codigoEspecialidad)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(MedicoEspecialidad));
                busqueda.Add(Restrictions.Eq("Especialidad.Codigo", codigoEspecialidad));
                return busqueda.UniqueResult<MedicoEspecialidad>();
            }

        }
    }
}